Developers write applications to make money. When those applications run, developers expect to understand their customers, either through direct market research or via instrumentation of their code to understand usage trends. This customer intelligence information can be invaluable to a developer in understanding how best to serve its customers, thereby maximizing its profits. Many developers seek to understand the higher-order “human level” information associated with their customers. This level of information would allow the developers to provide much more precise targeting (“narrowcasting”) of their applications and services to make runtime decisions around providing a wholly unique and customized experience on a customer-by-customer basis. Examples of this “human level” information (referred to throughout as a component of “customer intelligence information”) include: age, gender, home address, interests, commercial intent, and the like.
However, no matter how much instrumentation the developer places in the code, the developer will not know anything more about the customers than the customers themselves are willing to divulge. Many customers are unwilling to provide information due to privacy concerns, distrustfulness, or a simple lack of time. Thus, generally developers make do with the “physical level” information they can glean from the computing infrastructure. This includes metrics such as geographic location of the customer's IP address, browser language settings, timestamps, and the like.